#ifndef __HIERARCHY_H__
#define __HIERARCHY_H__

class oxTreeItemData;
class oxTreeCtrl;



class HierarchyItemData : public oxTreeItemData
{
public:
	HierarchyItemData() { m_x = m_y = m_scaleX = m_scaleY = m_zoom = 0;}
	HierarchyItemData(float x, float y) : m_x(x), m_y(y) {m_scaleX = m_scaleY = m_zoom = 0;}

private:
	float m_x, m_y;
	float m_scaleX, m_scaleY;
	float m_zoom;

};


class Hierarchy : public oxTreeCtrl
{
public:
	Hierarchy() {}
	Hierarchy(wxWindow *parent, const wxWindowID id = wxID_ANY);
	virtual ~Hierarchy(){};

	void OnBeginDrag(wxTreeEvent& event);
	void OnEndDrag(wxTreeEvent& event);

	void OnBeginLabelEdit(wxTreeEvent& event);
	void OnEndLabelEdit(wxTreeEvent& event);

	void OnSelChanged(wxTreeEvent& event);


	wxTreeItemId AppendItem(const wxTreeItemId &parent, float x, float y);

	static Hierarchy* get(){ return hierarchy; };

private:
	static Hierarchy *hierarchy;

	DECLARE_DYNAMIC_CLASS(Hierarchy)
	DECLARE_EVENT_TABLE()
};


#endif